#ifndef ALGORITHM_TEST_H
#define ALGORITHM_TEST_H
#include <vector>
#include <map>
#include <iostream>
class Item {
public:
	Item(int id, int count): mId(id), mCount(count) { }
	~Item(){
		std::cout << "~Item()" << std::endl;
	}
	int mId;
	int mCount;
};

class ELAlgorithmTest {
public:
	typedef std::vector<Item*> ItemList;
	typedef std::map<unsigned int, ItemList> ItemListMap;

	ELAlgorithmTest();
	~ELAlgorithmTest();
	ELAlgorithmTest* runTest();
private:
	bool testCountIf() const;
	bool testMax() const;
	bool testVector();
	bool testMap();
	void addItemToMapOfListWithCheck(unsigned int listId, int id, int count);
	void removeItemWithId(unsigned int id);
	bool testString();
	void addItemsToMapOfList(unsigned int listId, int id, int count);
	bool clearItems();
	void clearMapOfList();

	void testMapErase();


	ItemList mItems;
	ItemListMap mItemListsMap;
};

#endif